The present invention relates to computer networks in general and more particularly to methods and apparatus for downloading a file from a server.
Transfer protocols for downloading files from serving computers (servers) to client computers (clients) via computer networks such as the Internet are well known in the art. Two commonly used transfer protocols include the File Transfer Protocol (FTP) and the Hypertext Transfer Protocol (HTTP). Generally speaking, in order to download a file a client establishes a single data transfer link with a server during a file transfer session through which the contents of the file are transmitted from the server to the client.
Recent developments in file transfer protocols include the server""s ability to begin downloading a file from a point other than the start of the file simply by instructing the server to begin transmitting the file from a specified byte offset. This server xe2x80x9cdownload resumexe2x80x9d capability has led to the development of file transfer software that is able to resume a download where the data transfer link has been terminated in the middle of a download. The download is simply continued in another file transfer session via another data transfer link with the server from the point at which the download stopped.
Unfortunately, not all servers possess download resume capability. Thus, where a download is made from such a server, should the download be prematurely terminated before the complete file is received, the download cannot be resumed from the point of termination to retrieve the remaining portions of the file, but, rather, the download must be restarted from the beginning of the file.
The present invention seeks to provide improved methods and apparatus for downloading a file from a server that does not possess download resume capability.
There is thus provided in accordance with a preferred embodiment of the present invention a method for downloading files the method including the steps of at a client a) requesting a proxy server to initiate a first download of a file from a first server the first server determined by the client to lack download resume capability and the proxy server possessing download resume capability, at the proxy server b) initiating the first download of the file from the first server, and at the client c) initiating at least a second download of the file from the proxy server.
Further in accordance with a preferred embodiment of the present invention the initiating step c) includes initiating a plurality of concurrent second downloads from the proxy server, where each of the plurality of second downloads is of a different portion of the file, and further including the step of assembling the different portions of the file into a single downloaded file.
Still further in accordance with a preferred embodiment of the present invention the initiating step c) includes initiating prior to the completion of the first download of the file from the first server to the proxy server.
There is also provided in accordance with a preferred embodiment of the present invention a method for downloading files, the method including at a client a) initiating a first download of a file from a first server, the first server determined by the client to lack download resume capability, b) detecting a termination of the download prior to the file being completely downloaded, c) requesting a proxy server to initiate a second download of the file from the first server, the proxy server possessing download resume capability, at the proxy server d) initiating the second download of the file from the first server, at the client e) initiating at least a third download of a non-downloaded portion of the file from the proxy server, and f) assembling the portions of the file downloaded during the first and third downloads into a single downloaded file.
Further in accordance with a preferred embodiment of the present invention the initiating step e) includes initiating prior to the completion of the second download of the file from the first server to the proxy server.
It is appreciated throughout the specification and claims that references to a server not possessing download resume capability may be understood as either indicating that the server actually does not possess download resume capability or that the server while possessing download resume capability, appears to a client as not having download resume capability, such may occur when transparent proxies are employed between the client and the server.